home *** CD-ROM | disk | FTP | other *** search
/ QRZ! Ham Radio 8 / QRZ Ham Radio Callsign Database - Volume 8.iso / pc / files / dsp / fteyaltr.z / fteyaltr / fftout86.c < prev    next >
C/C++ Source or Header  |  1991-08-31  |  2KB  |  117 lines

  1. /* ---------------------- fftouta.c -----------------------------------    */
  2. /*                                    */
  3. /* Author:    Eyal Lebedinsky                        */
  4. /* Date:    May 1990                        */
  5. /* Version:    9 June 1991                        */
  6. /*                                    */
  7. /* called from fftg.c and generates Intel 80x86 .asm macro calls    */
  8. /*                                    */
  9. /* This program is released into the public domain.            */
  10. /*                                    */
  11. /*----------------------------------------------------------------------*/
  12.  
  13. #include <stdio.h>
  14.  
  15. void
  16. start_fft (file_name, ep_name)
  17. char    *file_name, *ep_name;
  18. {
  19.     char    fname[256];
  20.  
  21.     strcpy (fname, file_name);
  22.     strcat (fname, ".asm");
  23.  
  24.     freopen (fname, "wt", stdout);
  25.     printf ("\tINCLUDE fftsub86.mac\n");
  26.     printf ("_DATA\tSEGMENT WORD PUBLIC 'DATA'\n");
  27.     printf ("\tEXTRN _x:WORD\n");
  28.     printf ("\tEXTRN _qf:WORD\n");
  29.     printf ("_DATA\tENDS\n");
  30.     printf ("_TEXT\tSEGMENT WORD PUBLIC 'CODE'\n");
  31.     printf ("\tPUBLIC _%s\n", ep_name);
  32.     printf ("_%s\tPROC FAR\n", ep_name);
  33.  
  34.     printf (" push bp\n");
  35.     printf (" push si\n");
  36.     printf (" push di\n");
  37.     printf (" push ax\n");
  38.     printf (" push bx\n");
  39.     printf (" push cx\n");
  40.     printf (" push dx\n");
  41. }
  42.  
  43. void
  44. end_fft (file_name, ep_name)
  45. char    *file_name, *ep_name;
  46. {
  47.     printf (" pop dx\n");
  48.     printf (" pop cx\n");
  49.     printf (" pop bx\n");
  50.     printf (" pop ax\n");
  51.     printf (" pop di\n");
  52.     printf (" pop si\n");
  53.     printf (" pop bp\n");
  54.     printf (" retf\n");
  55.  
  56.     printf ("_%s\tENDP\n", ep_name);
  57.     printf ("_TEXT\tENDS\n");
  58.     printf ("\tEND\n");
  59.     close (stdout);
  60. }
  61.  
  62. void
  63. fft1 (i1)
  64. int    i1;
  65. {
  66.     printf (" fft1 %u\n", 2*i1);
  67. }
  68.  
  69. void
  70. fft2 (i1, i2)
  71. int    i1, i2;
  72. {
  73.     printf (" fft2 %u,%u\n", 2*i1, 2*i2);
  74. }
  75.  
  76. void
  77. fft3 (i1, i3, i4)
  78. int    i1, i3, i4;
  79. {
  80.     printf (" fft3 %u,%u,%u\n", 2*i1, 2*i3, 2*i4);
  81. }
  82.  
  83. void
  84. fft4 (i1, i2, i3, i4, cc1)
  85. int    i1, i2, i3, i4, cc1;
  86. {
  87.     printf (" fft4 %u,%u,%u,%u,0%04xH\n", 2*i1, 2*i2, 2*i3, 2*i4, cc1);
  88. }
  89.  
  90. void
  91. fft5 (i1, i2, i3, i4, i5, i6, i7, i8, sm1, sp1, cc1, sm3, sp3, cc3, ind)
  92. int    i1, i2, i3, i4, i5, i6, i7, i8, sm1, sp1, cc1, sm3, sp3, cc3, ind;
  93. {
  94.     printf (" fft5a %u,%u,0%04xH,0%04xH,0%04xH,%u\n",
  95.         2*i3, 2*i7, sm1, sp1, cc1, ind);
  96.  
  97.     printf (" fft5b %u,%u,0%04xH,0%04xH,0%04xH,%u\n",
  98.         2*i4, 2*i8, sm3, sp3, cc3, ind);
  99.  
  100.     printf (" fft5c %u,%u,%u,%u,%u,%u,%u,%u\n",
  101.         2*i1, 2*i2, 2*i3, 2*i4, 2*i5, 2*i6, 2*i7, 2*i8);
  102. }
  103.  
  104. void
  105. fft7 (i1, i2)
  106. int    i1, i2;
  107. {
  108.     printf (" fft7 %u,%u\n", 2*i1, 2*i2);
  109. }
  110.  
  111. void
  112. fft8 (i1, i2, i3)
  113. int    i1, i2, i3;
  114. {
  115.     printf (" fft8 %u,%u,%u\n", 2*i1, 2*i2, 2*i3);
  116. }
  117.